//#include"test.h"
//using namespace std;
//void Heapindit(Heap* hp)
//{
//	hp->a = (HPDataType*)malloc(sizeof(HPDataType) * 10);
//	if (hp->a == NULL)
//	{
//		perror("malloc::false");
//		return;
//	}
//	hp->_size = 0;
//	hp->_capacity = 10;
//}
//void HeapPush(Heap* hp, HPDataType x)
//{
//	if (hp->_size == hp->_capacity)
//	{
//		HPDataType* tmp = (HPDataType*)malloc(sizeof(HPDataType) * hp->_capacity * 10);
//		hp->_capacity *= 10;
//	}
//	hp->a[hp->_size] = x;
//	ADDjustup(hp, hp->_size);
//	hp->_size++;
//}
//void ADDjustup(Heap* hp, int child)
//{
//	
//	while (child > 0)
//	{
//		int parent = (child - 1) / 2;
//		if (hp->a[child] > hp->a[parent])
//		{
//			Swap(&hp->a[child], &hp->a[parent]);
//			child = parent;
//		}
//		else
//		{
//			break;
//		}
//	}
//}
//
//void Swap(HPDataType* a1, HPDataType*a2)
//{
//	int t = *a1;
//	*a1 = *a2;
//	*a2 = t;
//}
//void HeapDestory(Heap* hp)
//{
//	assert(hp);
//	free(hp->a);
//	hp->a = NULL;
//}
//void HeapPop(Heap* hp)
//{
//	assert(hp->_size);
//	assert(hp);
//	Swap(&hp->a[0], &hp->a[hp->_size - 1]);
//	hp->_size--;
//	ADDjustdown(hp, 0);
//}
//void ADDjustdown(Heap* hp, int parent)
//{
//	while (parent < hp->_size)
//	{
//		int child = parent * 2;
//		if (hp->a[child] < hp->a[child + 1])
//		{
//			child++;
//		}
//		if (hp->a[child] > hp->a[parent])
//		{
//			Swap(&hp->a[child], &hp->a[parent]);
//			parent = child;
//		}
//		else
//		{
//			break;
//		}
//	}
//}
//HPDataType HeapTop(Heap* hp)
//{
//	assert(hp);
//	return hp->a[0];
//}
//int HeapSize(Heap* hp)
//{
//	assert(hp);
//	return hp->_size;
//}
//int HeapEmpty(Heap* hp)
//{
//	assert(hp);
//	return hp->_size;
//}